package schema

import (
	"time"
)

// Group 群管理对象
type Group struct {
	ID        string    `json:"id"`                                    // 唯一标识
	Name      string    `json:"name" binding:"required"`               // 群名称
	HeadImg   string    `json:"head_img"`                              // 头像
	Type      int       `json:"type" binding:"required,max=3,min=1"`   // 群类型(1:21天群 2:高级群 3:朗读群)
	Tag       string    `json:"tag" binding:"required"`                // 分组标签
	Memo      string    `json:"memo"`                                  // 群简介
	Status    int       `json:"status" binding:"required,max=2,min=1"` // 状态(1:启用 2:停用)
	Admin     string    `json:"admin" binding:"required"`              // 群管理
	Creator   string    `json:"creator"`                               // 创建者
	CreatedAt time.Time `json:"created_at"`                            // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                            // 更新时间
}

// GroupUpdate 群管理对象
type GroupUpdate struct {
	ID        string    `json:"id"`                                     // 唯一标识
	Name      string    `json:"name" binding:"omitempty"`               // 群名称
	HeadImg   string    `json:"head_img"`                               // 头像
	Type      int       `json:"type" binding:"omitempty,max=3,min=1"`   // 群类型(1:21天群 2:高级群 3:朗读群)
	Tag       string    `json:"tag" binding:"omitempty"`                // 分组标签
	Memo      string    `json:"memo"`                                   // 群简介
	Status    int       `json:"status" binding:"omitempty,max=2,min=1"` // 状态(1:启用 2:停用)
	Admin     string    `json:"admin" binding:"omitempty"`              // 群管理
	Creator   string    `json:"creator"`                                // 创建者
	CreatedAt time.Time `json:"created_at"`                             // 创建时间
	UpdatedAt time.Time `json:"updated_at"`                             // 更新时间
}

func (a *GroupUpdate) ToGroup() *Group {
	return &Group{
		ID:        a.ID,
		Name:      a.Name,
		HeadImg:   a.HeadImg,
		Type:      a.Type,
		Tag:       a.Tag,
		Memo:      a.Memo,
		Status:    a.Status,
		Admin:     a.Admin,
		Creator:   a.Creator,
		CreatedAt: a.CreatedAt,
		UpdatedAt: a.UpdatedAt,
	}
}

// GroupQueryParam 查询条件
type GroupQueryParam struct {
	PaginationParam
	LikeName string `form:"name"`     // 群名称
	Name     string `form:"name"`     // 群名称
	HeadImg  string `form:"head_img"` // 头像
	Type     int    `form:"type"`     // 群类型(1:21天群 2:高级群 3:朗读群)
	LikeTag  string `form:"tag"`      // 分组标签
	Tag      string `form:"tag"`      // 分组标签
	LikeMemo string `form:"memo"`     // 群简介
	Memo     string `form:"memo"`     // 群简介
	Status   int    `form:"status"`   // 状态(1:启用 2:停用)
	Admin    string `form:"admin"`    // 群管理
	Creator  string `form:"creator"`  // 创建者

}

// GroupQueryOptions 查询可选参数项
type GroupQueryOptions struct {
	OrderFields []*OrderField // 排序字段
}

// GroupQueryResult 查询结果
type GroupQueryResult struct {
	Data       Groups
	PageResult *PaginationResult
}

// Groups 群管理列表
type Groups []*Group
